package com.example.admin.mycustomview.View;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.View;

import com.example.admin.mycustomview.R;

/**
 * Created by admin on 2016/6/28.
 * 主要讲解图片的处理 平移、旋转、缩放和错切
 * translate(float dx, float dy)：translate方法会改变画布的原点坐标，原点坐标对变换的影响弥足轻重
 * scale(float sx, float sy)      缩放也很好理解，但是它有一个重载方法scale(float sx, float sy, float px, float py)，后两个参数用于指定缩放的中心点，前两个参数用于指定横纵向的缩放比率值在0-1之间为缩小：
 * rotate(float degrees)          这个方法旋转的是画布的坐标轴，-90度是逆时针旋转
 * skew(float sx, float sy)       float sx:将画布在x方向上倾斜相应的角度，sx为倾斜角度的tan值；float sy:将画布在y轴方向上倾斜相应的角度，sy为倾斜角度的tan值；注意，这里全是倾斜角度的tan值，比如我们打算在X轴方向上倾斜45度，tan45=1；
 *
 */
public class LayerViewTwo extends View {

    private Bitmap mBitmap;// 位图对象

    private int mViewWidth, mViewHeight;// 控件宽高

    public LayerViewTwo(Context context, AttributeSet attrs) {
        super(context, attrs);
        // 从资源中获取位图对象
        mBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.img_test);
    }


    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
          /*
         * 获取控件宽高
         */
        mViewWidth = w;
        mViewHeight = h;
        // 缩放位图与控件一致
        mBitmap = Bitmap.createScaledBitmap(mBitmap, mViewWidth, mViewHeight, true);
    }

    @Override
    protected void onDraw(Canvas canvas) {

        canvas.save(Canvas.MATRIX_SAVE_FLAG);
        /**
         * 当比率为1:1时不进行缩放
         */
//        canvas.scale(1.0F, 1.0F);
        /**
         * 缩放不更改缩放中心
         */
//        canvas.scale(0.8F, 0.35F);
        /**
         * 缩放同=时修改缩放中心
         */
        canvas.scale(0.8F, 0.35F, mViewWidth, 0);
        canvas.drawBitmap(mBitmap, 0, 0, null);
        canvas.restore();

    }
}
